<template>
  <!-- 部门名称:{{ scope.data.name }} 负责人{{ scope.data.manager }} -->
  <!-- 公司信息行 -->
  <el-row class="info">
    <!-- 左侧 -->
    <el-col :span="20">
      <span v-if="!isCompany">
        {{ data.name }}
      </span>
      <strong v-else>
        {{ data.name }}
      </strong>
    </el-col>
    <!-- 右侧 -->
    <el-col :span="4">
      <el-row type="flex">
        <el-col>{{ data.manager }}</el-col>
        <el-col>
          <!-- 操作下拉菜单 -->
          <el-dropdown>
            <!-- 一直看见的部分 -->
            <span class="dropdown-btn">操作 <i class="el-icon-arrow-down" /> </span>
            <!-- 下拉显示菜单部分 -->
            <!-- 插槽 -->
            <template #dropdown>
              <el-dropdown-menu>
                <!-- ### 拓展添加 native 的原因
                @符号就是 v-on的缩写, 是用来监听事件的, 有两种情况
                1. 写在原生html元素上, 就是监听浏览器的原生事件
                2. 写在自定义组件上,实际上是监听自定义事件,需要自定义组件内部有 $emit (也就是子传父)
                如果你想要在自定义组件当中, 监听这个组件的原生元素事件, 需要加上 .native 修饰符 -->
                <el-dropdown-item @click.native="ShowDialog">添加子部门</el-dropdown-item>
                <el-dropdown-item v-if="!isCompany" @click.native="ShowEditDialog">编辑部门</el-dropdown-item>
                <el-dropdown-item v-if="!isCompany" @click.native="ShowdelDialog">删除部门</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
        </el-col>
      </el-row>
    </el-col>
  </el-row>
</template>

<script>
import { delDepartments } from '@/api/departments'
export default {
  props: {
    data: {
      type: Object,
      required: true
    },
    isCompany: {
      type: Boolean,
      default: false
    }
  },
  methods: {
    ShowDialog() {
      this.$emit('ShowDialog', this.data)
    },
    ShowEditDialog() {
      this.$emit('ShowEditDialog', this.data)
    },
    async ShowdelDialog() {
      try {
        // 二次询问
        await this.$confirm('是否确认删除?')
        // 发请求
        await delDepartments(this.data.id)
        // 提醒用户
        this.$message.success('删除成功')
        // 更新数据(部门树形数据, 通知父页面列表更新)
        this.$emit('reload')
      } catch (error) {
        console.log(error)
      }
    }

  }
}
</script>

<style scoped>
.info{
  width: 100%;
}
</style>
